package com.fbw.sys.uitls;

import com.fbw.sys.domain.Menu;

import java.util.ArrayList;
import java.util.List;

/*
这里外面还是使用的原始json格式，所以需要这样的封装
 */
public class TreeNodeBuilde {
    public static List<TreeNode> Builder(List<Menu> list){
        List<TreeNode> nodes = new ArrayList<>();//创建真正返回的结构
        //把list里面的数据，根据层级关系放入nodes
        for (Menu menu : list) {
            int id = menu.getId();
            int pid = menu.getPid();
            String title = menu.getTitle();
            String icon = menu.getIcon();
            String href = menu.getHref();
            boolean spread = menu.getSpread()==1?true:false;
            String target = menu.getTarget();
            //int id, int pid, String title, String icon, String href, Boolean spread, String target
            nodes.add(new TreeNode(id,pid,title,icon,href,spread,target));
        }

        List<TreeNode> treeNodes = new ArrayList<>();
        for (TreeNode t1:nodes) {
            //这一层循环父级
            if(t1.getPid()==1){
                treeNodes.add(t1);
            }
            //根据数据库里的规则，父节点为1的都是主菜单，父级循环只需要添加主节点
            for(TreeNode t2:nodes){
                //这一成循环封装子
                if(t2.getPid()==t1.getId()){
                    //循环装配
                    t1.getChildren().add(t2);
                }
            }
        }
        return treeNodes;
    }
}
